package service

import (
	"blog/utils"
	"encoding/json"
	"fmt"
	"strconv"
)

// Article 文章数据结构
type Article struct {
	Category string `json:"category"`
	Title    int    `json:"title"`
	MemberId string `json:"member_id"`
}

// Member 会员信息
type Member struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Pwd         string `json:"pwd"`
	PhoneNumber string `json:"phone_number"`
	Address     string `json:"address"`
}

// 7.x 以后库表合一
var dataType = "member"

// AllRun 主要操作
func AllRun() {
	RandMembers(200, 101)
}

// RandMembers 随机生成用户信息
func RandMembers(maxNum int, fromNum int) {
	for i := fromNum; i < maxNum; i++ {
		m := Member{
			ID:          strconv.Itoa(i),
			Name:        utils.RangUserName(),
			Pwd:         utils.GetRandName(5, false),
			PhoneNumber: utils.RandPhone(),
			Address:     utils.ShenZhenRandAds(),
		}
		AddMember(m)
		ShowMember(m.ID)
	}
}

// AddMember 添加会员信息
func AddMember(m Member) {
	put, err := client.Index().Index(dataType).Id(m.ID).BodyJson(m).Do(utils.Ctx)
	if err != nil {
		fmt.Println("错误", err)
	}
	fmt.Printf("indexed %s --- index %s --- type %s \n", put.Id, put.Index, put.Type)
}

// ShowMember 查找一条数据
func ShowMember(mId string) {
	//通过id查找
	get1, err := client.Get().Index(dataType).Id(mId).Do(utils.Ctx)
	if err != nil {
		panic(err)
	}
	if get1.Found {
		//fmt.Printf("Got document %s in version %d from index %s, type %s\n", get1.Id, get1.Version, get1.Index, get1.Type)
		var p Member
		err := json.Unmarshal(get1.Source, &p) //将结果集中的数据映射到结构体中
		if err != nil {
			fmt.Println(err)
		}
		fmt.Println(p)
	}
}

// -------------------------- 调试代码 -----------------
func addOne() {
	m := Member{
		ID:          "2",
		Name:        "法外狂徒张三徒弟李四",
		Pwd:         "123454659",
		PhoneNumber: "13123456788",
		Address:     "北京市海淀区中关村",
	}
	AddMember(m)
	ShowMember(m.ID)
}
